package 剑指专题.二叉树;


/*
 * Author：江松
 * Date：2023/3/24 12:25
 *
 树的子结构：
 从树A找到树B一样的点，进行比较
 */

public class Main5 {
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;

        public TreeNode(int val) {
            this.val = val;
        }
    }


    public  boolean check(TreeNode root1,TreeNode root2){
        //root2已经遍历完成
        if(root2==null)return true;
        //root2非空，但是root1为空；或者二者不相等
        if(root1==null||root1.val!=root2.val)return false;
        return check(root1.left,root2.left)&&check(root1.right,root2.right);
    }


    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        //题意空树返回假
       if(root2==null)return false;
       //root2非空，root1遍历完（或为空）返回假
       if(root1==null)return false;
       boolean flag=false;
       if(root1.val==root2.val)flag=check(root1,root2);
       return flag||HasSubtree(root1.left,root2)||HasSubtree(root1.right,root2);
    }
}
